"""
    信号量数字的大小,执行一个减1,执行完成一个加1,以此来把控资源合理分配
"""

from multiprocessing import Process, Semaphore
from time import sleep
import os

# 实例化信号量
sem = Semaphore(3)  # 最多运行3个任务

def handle_():
    sem.acquire() # 想执行任务,必须消耗一个信号量
    print(f"执行任务{os.getpid()}")
    sleep(2)
    print(f"执行任务完毕{os.getpid()}")
    sem.release()  # 执行完成一个归还信号量

# 假设任务量很大,同时创建了10个进程
lie = []
for i in range(10):
    pr = Process(target=handle_)
    pr.start()
    lie.append(i)
if lie:
    for c in lie:
        pr.join()